home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / MATH.SWG / 0020_SQRT.PAS.pas < prev    next >
Pascal/Delphi Source File  |  1993-05-28  |  2KB  |  44 lines

  1. (***** Find the square-root of an Integer between 1..2,145,635,041  *)
  2. (*                                                                  *)
  3. Function FindSqrt({input} lo_in : LongInt) : {output} LongInt;
  4.  
  5.   (***** SUB : Find square-root For numbers less than 65417.        *)
  6.   (*                                                                *)
  7.   Function FS1({input } wo_in : Word) : {output} Word;
  8.   Var
  9.     wo_Temp : Word;
  10.   begin
  11.     wo_Temp := 1;
  12.     While ((wo_Temp * wo_Temp) < wo_in) do
  13.       inc(wo_Temp, 11);
  14.     While((wo_Temp * wo_Temp) > wo_in) do
  15.       dec(wo_Temp);
  16.     FS1 := wo_Temp
  17.   end;      (* SUB : FS1.                                           *)
  18.  
  19.   (***** SUB : Find square-root For numbers greater than 65416.     *)
  20.   (*                                                                *)
  21.   Function FS2(lo_in : LongInt) : LongInt;
  22.   Var
  23.     lo_Temp : LongInt;
  24.   begin
  25.     lo_Temp := 1;
  26.     While ((lo_Temp * lo_Temp) < lo_in) do
  27.       inc(lo_Temp, 24);
  28.     While((lo_Temp * lo_Temp) > lo_in) do
  29.       dec(lo_Temp);
  30.     FS2 := lo_Temp
  31.   end;      (* SUB : FS2.                                           *)
  32.  
  33. begin
  34.   if (lo_in < 64517) then
  35.     FindSqrt := FS1(lo_in)
  36.   else
  37.     FindSqrt := FS2(lo_in)
  38. end;        (* FindSqrt.                                            *)
  39.  
  40. {
  41.   ...I've now re-written the "seive" Program, and it appears to now
  42.   run about twice as fast. I'll post the new improved source-code in
  43.   another message.
  44. }